Skip to content

feat: v61 in-app widgets (sheets + grid)#573

Open
jvsena42 wants to merge 60 commits into
masterfrom
feat/in-app-v61
Open

feat: v61 in-app widgets (sheets + grid)#573
jvsena42 wants to merge 60 commits into
masterfrom
feat/in-app-v61

Conversation

@jvsena42
Copy link
Copy Markdown
Member

@jvsena42 jvsena42 commented May 28, 2026

Description

This PR delivers the v61 in-app widgets redesign:

  1. Replaces the full-screen widget list, preview and edit screens with a single bottom sheet that navigates list → preview → edit, on a darker sheet background per the v61 design.
  2. Adds a two-size system (small / wide) chosen on the preview carousel and persisted per widget, with a 2-column home grid where small widgets pair side-by-side and wide widgets span the full width.
  3. Reworks editing mode into a dashed-border overlay with centered actions and drag-and-drop reordering that updates live as a widget is dragged over a cell.
  4. Implements the interactive compact calculator, lifting the number pad into a full-width bar pinned to the bottom of the screen so it works at either size.
  5. Adds the Bitkit Suggestions tile to the Add Widget gallery and its preview.
  6. Adds the redesigned "Hello, Widgets" onboarding with "View & Organize" and "Add Widget" actions.
  7. Handles the widgets-disabled state: the Add Widget sheet dims and blocks selection of tiles and shows an "Enable In Settings" button, and the widgets entry points route accordingly — onboarded with widgets enabled lands on the home widgets page, while disabled opens the Add Widget sheet (consistent across the drawer and "View & Organize", matching Android).
  8. Updates the default widget set to Suggestions, Price (wide), Blocks · Facts (compact pair), Weather · Calculator (compact pair), News (wide).

It also removes the now-unused per-widget preview/list/detail/edit screens.

Linked Issues/Tasks

Screenshot / Video

add-widget.mp4
fresh-wallet.mp4
all-preview-and-edit.mp4
calculator.mp4
widgets-disabled.mp4
reset-widgets.mp4
backup-widgets.mp4

QA Notes

Manual Tests

  • 1. Home Widgets → Add Widget → tap a widget → swipe carousel to SMALL → Save Widget: widget appears half-width, paired with the next small widget.
  • 2. Add Widget → tap a widget → WIDE page → Save Widget: widget spans the full grid width.
  • 3. Preview (Price/Headlines/Blocks/Weather) → Widget Settings → toggle fields → back: choices persist; Facts/Calculator/Suggestions show no settings row.
  • 4a. Home Widgets → enter editing → each widget shows dashed border + delete/settings/move icons.
    • 4b. drag a widget by the move handle over another cell (and into a gap): order updates live and persists.
    • 4c. trash → confirm: widget removed; settings: opens that widget's preview.
  • 5a. Add a SMALL calculator → tap the ₿ or $ row: full-width number pad slides up at the bottom, tab bar hides, the calculator lifts above the keypad; typing updates both fields.
    • 5b. tap outside / drag down: keypad dismisses and content returns.
    • 5c. regression: WIDE calculator: keypad behavior and conversions unchanged.
  • 6. Add Widget → Bitkit Suggestions tile shows the suggestion cards → tap → preview → Save Widget adds it.
  • 7a. Onboarding → View & Organize (widgets enabled): lands on the home Widgets page.
    • 7b. Drawer → Widgets (onboarded, enabled): lands on the home Widgets page.
  • 8a. Settings → disable widgets → Add Widget sheet: tiles dimmed/non-tappable, "Enable In Settings" routes to Widgets settings.
    • 8b. Onboarding → View & Organize and Drawer → Widgets (disabled): open the Add Widget sheet, not the hidden home page.
  • 9. regression: upgrade from a build with saved widgets: existing widgets render (default wide) and the grid lays out correctly; fresh install/reset shows the new default set.

Automated Checks

  • Build: xcodebuild -project Bitkit.xcodeproj -scheme Bitkit -configuration Debug -destination 'platform=iOS Simulator,id=<iPhone 16>' build ONLY_ACTIVE_ARCH=YES passes locally. Active-arch is required because the default x86_64 simulator slice fails to link the Rust FFI, unrelated to these changes.
  • SwiftFormat: clean on the touched files.
  • CI: standard build/test checks run by the PR bot.

@jvsena42 jvsena42 self-assigned this May 28, 2026
@jvsena42
Copy link
Copy Markdown
Member Author

@codex review

@jvsena42 jvsena42 added this to the 2.3.0 milestone May 28, 2026
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e03060231e

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Bitkit/Views/Widgets/WidgetsListSheetView.swift Outdated
Comment thread Bitkit/Views/Widgets/WidgetPreviewSheetView.swift Outdated
Comment thread Bitkit/Services/Trezor/TrezorBLEManager.swift
@jvsena42 jvsena42 marked this pull request as ready for review June 2, 2026 14:10
@jvsena42
Copy link
Copy Markdown
Member Author

jvsena42 commented Jun 2, 2026

Addressed the review feedback below 👇

From this comment

IntroScreen

spacing

→ Fixed in e6bcbf3

WidgetPreviews

remove horizontal scroll

→ Fixed in 75d705a and 2be4e01

headlines widget spacing
blocks widget (large) spacing (should look like on Widget detail screen)

→ Fixed in 2bf3320

suggestion cards look wrong on this screen, probably because of sheet background color

→ Fixed in fa32752

also card images should be left aligned

→ Fixed in 4718b89

Widgets

blocks widget (small) spacing: now with the fixed height there is too much space, better to align to the top like in Figma

→ Fixed in b77ce63

Widgets Edit State

icons spacing

→ Fixed in 21f19f8

missing blur

→ Fixed in 8ac0841

settings icon should be disabled for widgets without settings, see Figma

→ Fixed in db403f3

From this comment

gradient shadow at the bottom here makes it look like the buttons are disabled, keyboard should be above shadow

→ Fixed in 44d0d22

From this comment

nit: would be cleaner if the carousel pages had internal padding instead of the outer so cutoff is at the edge of the screen when swiping

→ Fixed in 6d379c6

also check carousel indicator spacing

→ Fixed in 5f8ef9a


Simulator.Screen.Recording.-.iPhone.16.-.2026-06-02.at.11.37.57.mov

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0c3db142be

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Bitkit/Views/Widgets/WidgetPreviewSheetView.swift Outdated
ovitrif

This comment was marked as resolved.

@jvsena42 jvsena42 marked this pull request as draft June 2, 2026 14:48
@jvsena42

This comment was marked as resolved.

@jvsena42
Copy link
Copy Markdown
Member Author

jvsena42 commented Jun 2, 2026

1️⃣ There's still a darker bg for the suggestions container**

fixed in 7141a03

2️⃣ Widgets Intro button "Add Widget" shouldn't navigate to home screen when tapped, it should stay behind the Widgets Sheet until a widget is added, according to FIGMA prototype** (this is also how it was implemented in Android)

Fixed in ac781e3

Simulator.Screen.Recording.-.iPhone.16.-.2026-06-02.at.13.29.03.mov

@jvsena42 jvsena42 marked this pull request as ready for review June 2, 2026 16:32
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ac781e3c01

ℹ️ About Codex in GitHub

Codex has been enabled to automatically review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

When you sign up for Codex through ChatGPT, Codex can also answer questions or update the PR, like "@codex address that feedback".

Comment thread Bitkit/Components/Widgets/BaseWidget.swift
@jvsena42 jvsena42 requested review from ovitrif and pwltr June 2, 2026 17:27
Copy link
Copy Markdown
Collaborator

@ovitrif ovitrif left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, no other remarks 👏🏻

Retested reported issues + reorder feature (with drag&drop tiles) + smoke test add widgets

@ovitrif ovitrif dismissed pwltr’s stale review June 2, 2026 22:06

resolved

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature]: add widget intro and add-widget grid [Feature]: add compact widget support in app

4 participants